import turtle
import time

# 初始化一些基本数据
turtle.setup(720, 720)
turtle.tracer(False)
turtle.ht()

'''
函数名：init
描述：这个类是初始化智力问答的数据
参数：question_list 问题文字
     answer_index_list 答案索引列表
     option_list 答案选项列表          
     option_pos_list 答案选项位置列表
     result_pos_list 用户选择答案之后提示出现的位置
     end_pos_list 用户打完所有题目出现提示的位置
     qusetion_pos_list 问题文字的位置
     question_index_list 当前题目是哪道题
     index 当前题目序号索引
'''


def init():
    global qusetion_list, answer_index_list, option_list, \
        option_pos_list, result_pos_list, answer_pos_list, \
        end_pos_list, qusetion_pos_list, question_index_list, index
    qusetion_list = ['最喜欢的狗', '最喜欢的颜色', '最喜欢的职业']
    qusetion_pos_list = [-120, 200]
    option_list = [['A:边牧', 'B:金毛', 'C:泰迪'], ['A:红色', 'B:白色', 'C:黑色'], ['A:老师', 'B:医生', 'C:警察']]
    answer_index_list = [0, 1, 2]
    answer_pos_list = [[[-270, -150], [-100, -50]], [[-70, 50], [-100, -50]], [[130, 250], [-100, -50]]]
    option_pos_list = [[[-270, -150], [-100, -50]], [[-70, 50], [-100, -50]], [[130, 250], [-100, -50]]]
    result_pos_list = [-80, 100]
    end_pos_list = [-50, -20]
    question_index_list = [1, 2, 3]
    index = 0


# 定义笔函数
def pen(color, content, size, x, y):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    turtle.pencolor(color)
    turtle.write(content, font=('Arial', size))


'''
定义点击事件 
    点击正确进行判断，如果选择正确，
        那么就判断是否后面还有题，
            没有题就显示结束文字
            有题就刷新界面并显示题目
    如果选择错误，
        那么让用户再次选择题目，选择错误会有提示
'''


def click(x, y):
    global index
    if index == 0:
        if x <= answer_pos_list[0][0][1] and x >= answer_pos_list[0][0][0] and y >= answer_pos_list[0][1][0] and y <= \
                answer_pos_list[0][1][1]:
            # 显示正确信息
            show_correct1()
            index += 1
        else:
            turtle.pencolor('white')
            turtle.penup()
            turtle.goto(-80, 100)
            turtle.down()
            turtle.fillcolor('white')
            turtle.begin_fill()
            turtle.goto(120, 100)
            turtle.goto(120, 200)
            turtle.goto(-80, 200)
            turtle.goto(-80, 100)
            turtle.end_fill()
            pen('red', '回答错误！', 30, result_pos_list[0], result_pos_list[1])
    elif index == 1:
        if x <= answer_pos_list[1][0][1] and x >= answer_pos_list[1][0][0] and y >= answer_pos_list[1][1][0] and y <= \
                answer_pos_list[1][1][1]:
            show_correct2()
            index += 1
        else:
            turtle.pencolor('white')
            turtle.penup()
            turtle.goto(-80, 100)
            turtle.down()
            turtle.fillcolor('white')
            turtle.begin_fill()
            turtle.goto(120, 100)
            turtle.goto(120, 200)
            turtle.goto(-80, 200)
            turtle.goto(-80, 100)
            turtle.end_fill()
            pen('red', '回答错误！', 30, result_pos_list[0], result_pos_list[1])
    elif index == 2:
        if x <= answer_pos_list[2][0][1] and x >= answer_pos_list[2][0][0] and y >= answer_pos_list[2][1][0] and y <= \
                answer_pos_list[2][1][1]:
            show_correct3()
            index += 1
        else:
            turtle.pencolor('white')
            turtle.penup()
            turtle.goto(-80, 100)
            turtle.down()
            turtle.fillcolor('white')
            turtle.begin_fill()
            turtle.goto(120, 100)
            turtle.goto(120, 200)
            turtle.goto(-80, 200)
            turtle.goto(-80, 100)
            turtle.end_fill()
            pen('red', '回答错误！', 30, result_pos_list[0], result_pos_list[1])


def show_correct1():
    turtle.pencolor('white')
    turtle.penup()
    turtle.goto(-80, 100)
    turtle.down()
    turtle.fillcolor('white')
    turtle.begin_fill()
    turtle.goto(120, 100)
    turtle.goto(120, 200)
    turtle.goto(-80, 200)
    turtle.goto(-80, 100)
    turtle.end_fill()
    pen('green', '回答正确！', 30, result_pos_list[0], result_pos_list[1])
    time.sleep(3)
    # 清屏
    turtle.clear()
    # 显示下一道题
    # 画题目数据
    pen('black', qusetion_list[1], 35, qusetion_pos_list[0], qusetion_pos_list[1])
    # 画选项数据
    pen('black', option_list[1][0], 30, option_pos_list[0][0][0], option_pos_list[0][1][0])
    pen('black', option_list[1][1], 30, option_pos_list[1][0][0], option_pos_list[0][1][0])
    pen('black', option_list[1][2], 30, option_pos_list[2][0][0], option_pos_list[0][1][0])

def show_correct2():
    turtle.pencolor('white')
    turtle.penup()
    turtle.goto(-80, 100)
    turtle.down()
    turtle.fillcolor('white')
    turtle.begin_fill()
    turtle.goto(120, 100)
    turtle.goto(120, 200)
    turtle.goto(-80, 200)
    turtle.goto(-80, 100)
    turtle.end_fill()
    pen('green', '回答正确！', 30, result_pos_list[0], result_pos_list[1])
    time.sleep(3)
    # 清屏
    turtle.clear()
    # 显示下一道题
    # 画题目数据
    pen('black', qusetion_list[2], 35, qusetion_pos_list[0], qusetion_pos_list[1])
    # 画选项数据
    pen('black', option_list[2][0], 30, option_pos_list[0][0][0], option_pos_list[0][1][0])
    pen('black', option_list[2][1], 30, option_pos_list[1][0][0], option_pos_list[0][1][0])
    pen('black', option_list[2][2], 30, option_pos_list[2][0][0], option_pos_list[0][1][0])

def show_correct3():
    turtle.pencolor('white')
    turtle.penup()
    turtle.goto(-80, 100)
    turtle.down()
    turtle.fillcolor('white')
    turtle.begin_fill()
    turtle.goto(120, 100)
    turtle.goto(120, 200)
    turtle.goto(-80, 200)
    turtle.goto(-80, 100)
    turtle.end_fill()
    pen('green', '回答正确！', 30, result_pos_list[0], result_pos_list[1])
    time.sleep(3)
    # 清屏
    turtle.clear()
    # 显示结束语
    pen('green', '游戏结束!', 30, result_pos_list[0], result_pos_list[1])

# 初始化数据
init()
# 画题目数据
pen('black', qusetion_list[0], 35, qusetion_pos_list[0], qusetion_pos_list[1])
# 画选项数据
pen('black', option_list[0][0], 30, option_pos_list[0][0][0], option_pos_list[0][1][0])
pen('black', option_list[0][1], 30, option_pos_list[1][0][0], option_pos_list[0][1][0])
pen('black', option_list[0][2], 30, option_pos_list[2][0][0], option_pos_list[0][1][0])
# 用户鼠标点击事件
turtle.onscreenclick(click)

turtle.done()
